%        File: caso_inizializzazione.tex
%     Created: gio giu 23 07:00  2011 C
% Last Change: gio giu 23 07:00  2011 C
%
\documentclass[italian,a4paper]{article}
\usepackage{babel}
\usepackage[text={6in,9in},centering]{geometry}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ae,aecompl}
\frenchspacing
\pagestyle{plain}
\title{Schema dei passaggi principali}

\author{Paolo Pigato\\ Davide Poletti}
\begin{document}
\maketitle

\section*{Scelta delle opzioni}
\begin{enumerate}
    \item La classe Menu M chiede all'utente la dimensione della matrice e 
        il tipo dei giocatori (umano/cpu)
    \item M inizializza una struct (Classe?) opzioni che contiene dimensioni,
        tipo giocatori e altri eventuali parametri (da vedere)
    \item M inizializza un oggetto game manager GM, che gestisce la partita
    \item Chiusura del programma
\end{enumerate}

\section*{Gestione partita}
\begin{enumerate}
    \item GM Inizializza la partita
    \item GM in base all'apposito attributo decide chi tocca
        \label{turno}
    \item GM invoca un turno di partita con i giocatori nei ruoli opportuni.
    \item GM se la partita è finita comunica il vincitore, altrimenti
        modifica l'attributo per la gestione dei turni e ripete il punti da
        \ref{turno}
    \item GM comunica il vincitore all'utente
\end{enumerate}


\section*{Inizializzazione della partita}
\begin{enumerate}
    \item Il game manager GM inizializza G1 e G2 giocatori del tipo specificato nelle
        opzioni.
    \item Ogni giocatore inizializza il proprio mare e le proprie navi.
    \item Ogni giocatore comunica a GM il puntatore al proprio mare.
    \item GM comunica a ogni giocatore il puntatore al mare avversario.
    \item Il GM chiede a G1 di posizionare una nave.
        \label{posizionamento}
    \item G1 chiede alla propria strategia tipo posizione e
        orientamento della nave
    \item G1 chiede al proprio mare se la nave può essere inserita in tale
        modo
    \item In caso affermativo G1 crea un oggetto Nave e lo inserisce nella
        lista delle proprie navi
    \item In caso affermativo il mare inserisce la nave (aggiorna le caselle occupate dalla nave
        aggiungendo un puntatore alla nave).
    \item Il G1 torna a GM il tipo di nave.
    \item GM chiede a G2 di inserire una nave del tipo restituito da G1
    \item G2 chiede alla propria strategia posizione e
        orientamento della nave del tipo dato
    \item G2 chiede al proprio mare se la nave può essere inserita in tale
        modo
    \item In caso affermativo G2 crea un oggetto Nave e lo inserisce nella
        lista delle proprie navi
    \item In caso affermativo il mare inserisce la nave (aggiorna le caselle occupate dalla nave
        aggiungendo un puntatore alla nave).
    \item I punti successivi a \ref{posizionamento} si ripetono fintanto che
        non lo decide G1
\end{enumerate}

\section*{Turno di una partita}
\begin{enumerate}
    \item GM, in base a un parametro, decide chi sarà l'attaccante GA e il
        difensore GD
    \item GM dice a GA di sparare
    \item GA decide dove sparare
    \item GA comunica a MD le coordinate dello sparo
    \item MD cambia lo stato ``sparo'' della casella corrispondente
    \item MD controlla se la casella corrispondente alle coordinate è
        associata a una nave
    \item In caso affermativo la nave corrispondente incrementa di un'unità il
        numero di colpi ricevuti.
    \item La nave controlla se il numero di colpi subiti è pari al numero di
        caselle occupate. In caso affermativo cambia il proprio stato in
        affondata.
    \item La nave comunica a MD se è stata affondata
    \item MD comunica a GA l'esito
    \item GA comunica a GM l'esito del proprio turno
\end{enumerate}

\end{document}


